﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Fotoalbum.UI
{
    public partial class frmFotosammlung : Form, IView
    {
        private Presenter _presenter;

        #region Singelton
        private static frmFotosammlung _instance;
        public static void Show(Form parent)
        {
            if (_instance == null)
                _instance = new frmFotosammlung(parent);

            _instance.Show();
        }
        private frmFotosammlung(Form parent)
        {
            if (parent != null)
                new FotoStammbuch.Core.MdiChildExtender(this, parent);

            InitializeComponent();
        }
        #endregion

        private void frmFotosammlung_Load(object sender, EventArgs e)
        {
            _presenter = new Presenter(this);
        }

        private void ctxBilderHinzufügen_Click(object sender, EventArgs e)
        {
            _presenter.BildZurSammlungHinzufügen();
        }

        private void tvAlben_AfterSelect(object sender, TreeViewEventArgs e)
        {
            _presenter.TreeNodeSelected(e.Node);
        }

        #region MenuStrip

        private void mnuDateiÖffnen_Click(object sender, EventArgs e)
        {
            _presenter.BildZurSammlungHinzufügen();
        }

        private void mnuDateiSchließen_Click(object sender, EventArgs e)
        {
            Close();
        }

        #endregion MenuStrip

        private void lsvBilder_SelectedIndexChanged(object sender, EventArgs e)
        {
            //TODO _presenter.BildAusgewählt();
        }

        #region IView Members

        public TreeNode SelectedNode
        {
            get{ return tvAlben.SelectedNode; }
            set { tvAlben.SelectedNode = value; }
        }

        public void SetTreeNodes(TreeNode[] nodes)
        {
            tvAlben.Nodes.Clear();
            tvAlben.Nodes.AddRange(nodes);
        }

        public void ListViewAktualisieren(IEnumerable<BLL.Bild> bilder)
        {
            lsvBilder.SuspendLayout();

            lsvBilder.Items.Clear();
            foreach (BLL.Bild bild in bilder)
            {
                lsvBilder.Items.Add(bild.Data.DateiPfad);
            }

            lsvBilder.ResumeLayout(true);
        }

        #endregion
    }
}
